package com.liuwa.knowledge.dao;

import com.liuwa.common.core.dao.CurdDao;
import com.liuwa.knowledge.domain.User;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;


/**
 * 用户Mapper接口
 * 
 * @author liuwa
 * @date 2023-12-12 16:00:20
 */
public interface UserDao extends CurdDao<Long, User>{

    /**
     * 通过用户名获取用户信息
     * @param username
     * @return
     */
    User findByUsername(@Param("username") String username);

    /**
     * 通过手机号获取用户信息
     * @param phone
     * @return
     */
    User findByPhone(@Param("phone") String phone);

    /**
     *  更新密码
     * @param user
     */
    void updatePassword(User user);



    /**
     * 获取钱包并开启悲观锁
     * @param userId
     * @return
     */
    BigDecimal getWalletForUpdate(@Param("userId") Long userId);



    /**
     * 增量更新钱包
     * @param userId
     * @param volume
     */
    void incrementWallet(@Param("userId") Long userId, @Param("volume") BigDecimal volume);





}
